package com.example.demo.service.order;

import com.example.demo.common.BasePageResponse;
import com.example.demo.common.ResultObject;
import com.example.demo.jooq.tables.pojos.Apply;
import com.example.demo.jooq.tables.pojos.Email;
import com.example.demo.jooq.tables.pojos.ShopOrder;
import com.example.demo.model.request.*;
import com.example.demo.model.response.ApplyPageResponse;
import com.example.demo.model.response.OrderPageResponse;
import com.example.demo.model.response.VpsResponse;

import javax.servlet.http.HttpServletResponse;

public interface IOrderService {
    /**
     * 分页查询Vps
     * @param orderPageRequest
     * @return ResultObject<BasePageResponse<VpsResponse>>
     */
    public ResultObject<BasePageResponse<OrderPageResponse>> queryPageOrderList(OrderPageRequest orderPageRequest);

    /**
     * 分页查询Vps
     * @param applyPageRequest
     * @return ResultObject<BasePageResponse<VpsResponse>>
     */
    public ResultObject<BasePageResponse<ApplyPageResponse>> queryPageApplyList(ApplyPageRequest applyPageRequest);


    /**
     * 保下单信息
     * @param apply 数据对象
     * @return ResultObject<BasePageResponse<VpsResponse>>
     */
    public ResultObject saveApply(ApplyRequest apply);


    /**
     * 保下单信息
     * @param order 数据对象
     * @return ResultObject<BasePageResponse<VpsResponse>>
     */
    public ResultObject saveOrder(OrderRequest order);



    /**
     * 查询订单详情
     * @param orderId 数据对象
     * @return ResultObject<OrderPageResponse>
     */
    public ResultObject<OrderPageResponse> queryOrderDetail(String orderId);


    /**
     * 查询下单详情
     * @param applyId 数据对象
     * @return ResultObject<ApplyPageResponse>
     */
    public ResultObject<ApplyPageResponse> queryApplyDetail(String applyId);


    /**
     * 导出反馈订单
     * @param orderPageRequest
     * @return ResultObject<BasePageResponse<VpsResponse>>
     */
    public ResultObject exportPageOrderList(HttpServletResponse response,OrderExportRequest orderPageRequest);


    /**
     * 第三方反馈导出
     * @param orderPageRequest
     * @return ResultObject<BasePageResponse<VpsResponse>>
     */
    public ResultObject exportRefundOrderList(HttpServletResponse response,OrderExportRequest orderPageRequest);


}
